/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Selecao;

import algoGenetico.Individuo;
import java.util.List;

/**
 *
 * @author Fernando
 */
public class AUEstocastica {

    private int[] roleta;
    private int[] escolhidos;

    public int[] selecao(List<Individuo> individuo, int quantidade) {
        int[] auxvector = new int[100000];
        escolhidos = new int[quantidade];
        double somatorioFitness = 0;
        int ponteiro = 0;
        for (Individuo obj : individuo) {
            double inverso = 1 / obj.getFitness();
            somatorioFitness += inverso;
        }
        int aux = 0;
        for (Individuo obj1 : individuo) {
            double inverso1 = 1 / obj1.getFitness();
            double percent = inverso1 / somatorioFitness;
            double numDeIndices = percent * 500;
            int x = 0;
            for (x = ponteiro; x < ponteiro + numDeIndices; x++) {
                auxvector[x] = aux;
            }
            ponteiro = x;
            aux++;
        }
        roleta = new int[ponteiro];
        for (int y = 0; y < ponteiro; y++) {
            roleta[y] = auxvector[y];
        }
        imprimir(roleta);

        //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

        int quantDePonteiros = (int) roleta.length / quantidade;
        for (int w = 0; w < quantidade; w++) {
            escolhidos[w] = roleta[w * quantDePonteiros];
        }
        imprimir(escolhidos);
        return escolhidos;
    }

    public void imprimir(int[] vetor) {
        System.out.print("Roleta: =>");
        for (int i = 0; i < vetor.length; i++) {
            System.out.print(vetor[i] + "|");
        }
        System.out.println("<=");
    }
}
